﻿/************************************************************************
 * SMLib - State Model Library
 * Copyright (C) 2012-2013 Ali Khalili (khalili_DOT_ir_@SIGN_gmail_DOT_com)
 * **********************************************************************
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License (LGPL) published 
 * by the Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version. This program is distributed without any
 * warranty. See the GNU Lesser General Public License for more details. 
 * ***********************************************************************
 * File         :     SMLib\Automata\Base\ISymbol.cs
 * Description  :     Provide a common interface for symbols (a symbol, simply is an 
 *                    object with a userObject and a function to determine type of symbol
 * Change log   :     -22 Feb 2013: Adding "TypeOfSymbol"
 *                    -Jan 2013:  Initial version
 * To Do        :
 ************************************************************************/

using System;

namespace SMLib.Automata.Base
{
    /// <summary>
    /// Provide a common interface for symbols (a symbol, simply is an object with a userObject 
    /// and a function to determine type of symbol
    /// </summary>
    public interface ISymbol
    {
        /// <summary>
        /// Access to the value of a symbol
        /// </summary>
        object ContentObject
        {
            set;
            get;
        }

        /// <summary>
        /// Type of a symbol.
        /// <remarks>In a consistent alphabet, types of all symbols are the same</remarks>
        /// </summary>
        /// <returns>type of the symbol</returns>
        Type TypeOfSymbol();
    }
}
